import {TableDataInfo, Result} from "@/model";
import request from "@/utils/request";
import {AxiosPromise} from "axios";
import {Password, AdminForm, AdminInfo, AdminQuery, AdminRole, AdminStatus} from "./types";
import {OnlineQuery} from "@/api/agree/types";

/**
 * 获取管理员信息
 * @returns 管理员信息
 */
export function getAdminInfo(): AxiosPromise<Result<AdminInfo>> {
    return request({
        url: "/admin/admin/getAdminInfo",
        method: "get",
    });
}

/**
 * 查看管理员列表
 * @param params 查询条件
 * @returns 管理员列表
 */
export function getAdminList(params: AdminQuery): AxiosPromise<TableDataInfo> {
    return request({
        url: "/admin/admin/list",
        method: "get",
        params,
    });
}

/**
 * 查看管理员角色选项
 * @returns 管理员角色选项
 */
export function getAdminRoleList(): AxiosPromise<Result<AdminRole[]>> {
    return request({
        url: "/admin/admin/role",
        method: "get",
    });
}

/**
 * 修改管理员
 * @param data 管理员信息
 */
export function updateAdmin(data: AdminForm): AxiosPromise<Result<null>> {
    return request({
        url: "/admin/admin/update",
        method: "put",
        data,
    });
}

/**
 * 修改管理员状态
 * @param data 管理员状态
 */
export function updateAdminStatus(data: AdminStatus): AxiosPromise<Result<null>> {
    return request({
        url: "/admin/admin/changeStatus",
        method: "put",
        data,
    });
}

/**
 * 查看在线管理员列表
 * @param params 查询条件
 * @returns 在线管理员列表
 */
export function getOnlineAdminList(params: OnlineQuery): AxiosPromise<TableDataInfo> {
    return request({
        url: "/admin/onlineAdmin/list",
        method: "get",
        params,
    });
}

/**
 * 下线管理员
 * @param token 在线token
 */
export function kickOutAdmin(token: string): AxiosPromise<Result<null>> {
    return request({
        url: `/admin/onlineAdmin/kick/${token}`,
        method: "get",
    });
}

/**
 * 修改管理员密码
 * @param data 密码
 */
export function updateAdminPassword(data: Password) {
    return request({
        url: "/admin/admin/passwd",
        method: "put",
        data,
    });
}
